#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int a[510];
int d[510];
int dp[510][510]; // i dian yong j个 且停
int T, n, num, m, k;

const int INF = 2e9 + 100;

signed main() {
#ifdef LOCAL
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif
    cin >> n >> m >> k;
    for (int i = 1;i <= n;i++) {
        cin >> d[i];
    }
    d[n + 1] = m;

    for (int i = 1;i <= n;i++) {
        cin >> a[i];
    }
    memset(dp, 0x3f, sizeof(dp));
    dp[1][0] = 0;
    for (int i = 2;i <= n + 1;i++) {
        for (int j = 0;j <= min(k, i - 2);j++) {
            dp[i][j] = INF;
            for (int t = 1;t < i;t++) {
                int temp = i - t - 1;
                if (j - temp >= 0 && j - temp <= k) {
                    dp[i][j] = min(dp[t][j - temp] + ((d[i] - d[t]) * a[t]), dp[i][j]);
                }
            }
        }
    }
    while (false) {

    }
    int ans = 1e9;
    for (int i = 0;i <= k;i++) {
        //ans = min(ans, dp[n + 1][i]);
        if (dp[n+1][i] < ans) ans = dp[n+1][i];
    }
    cout << ans << endl;
    return 0;
}